// rust 编译时可以计算出大小的类型，自动实现Sized这个trait
// 为泛型函数隐式的添加Sized约束
fn generic<T>(t:T){} //T会隐式的添加Sized约束
fn generic2<T:Sized>(t1:T){}

//默认情况下泛型参数是Sized的，可以通过 ?Sized来改变，必须包裹起来才可以
fn generic3<T:?Sized>(t:&T){} // &T引用的类型是Size的，确定的。 T不确定不能直接用，需要包裹。
fn generic4<T:?Sized>(t:&mut T){}
fn generic5<T:?Sized>(t:Box<T>){}
// fn generic10<T:?Sized>(t:Box<dyn T+'static>){} //error . dyn T不可以。

